#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
const int N=100050;
int n,k;
struct node{
    int i;
    int p;
    int c;
    long long res;
}a[N];
bool cmp(node a,node b){
    return a.p<b.p;
}
bool cmp2(node a,node b){
    return a.i<b.i;
}
int main(void){
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i].p);
        a[i].i=i;
    }
    for(int i=0;i<n;i++){
        scanf("%d",&a[i].c);
        a[i].res=a[i].c;
    }
    sort(a,a+n,cmp);
    // for(int i=0;i<n;i++){
    //     printf("%d %d\n",a[i].p,a[i].c);
    // }
    multiset<int,greater<int>> s;
    for(int i=0;i<n;i++){
        int cnt=0;
        for(auto t:s){
            //k为0特判
            cnt++;
            if(cnt>k){
                break;
            }
            a[i].res+=t;
        }
        s.insert(a[i].c);
    }
    sort(a,a+n,cmp2);
    for(int i=0;i<n-1;i++){
        printf("%lld ",a[i].res);
    }
    printf("%lld\n",a[n-1].res);
    return 0;
}